Database Queries এবং Transactions

Computer Programming - নোড জেএস (Node.js) - Database Integration (ডেটাবেস ইন্টিগ্রেশন)
206

Node.js-এ ডাটাবেসের সাথে কাজ করার জন্য, আমরা সাধারণত SQL বা NoSQL ডাটাবেস ব্যবহার করি। এখানে SQL (Structured Query Language) ডাটাবেস যেমন MySQL, PostgreSQL এবং NoSQL ডাটাবেস যেমন MongoDB এর সাথে ডাটাবেস কুয়েরি এবং ট্রানজেকশন হ্যান্ডলিং নিয়ে আলোচনা করব।


১. SQL Database (MySQL/PostgreSQL) Query Handling

SQL ডাটাবেসে ডাটা রিট্রিভাল, ইনসার্ট, আপডেট, এবং ডিলিট করার জন্য কুয়েরি ব্যবহার করা হয়। Node.js এ SQL ডাটাবেসের সাথে যোগাযোগ করতে সাধারণত mysql2, pg (PostgreSQL) বা sequelize (ORM) প্যাকেজ ব্যবহৃত হয়।

MySQL Query Handling (mysql2 প্যাকেজ)

  1. MySQL2 ইনস্টল করা
npm install mysql2
  1. MySQL কনফিগারেশন এবং কুয়েরি এক্সিকিউট করা
const mysql = require('mysql2');

// MySQL ডাটাবেসের সাথে সংযোগ স্থাপন
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    database: 'test_db'
});

// কুয়েরি এক্সিকিউট করা
connection.query('SELECT * FROM users', (err, results, fields) => {
    if (err) {
        console.error('Error executing query:', err);
    } else {
        console.log('Query Results:', results);
    }
    connection.end();
});

এখানে, connection.query() ব্যবহার করে একটি SELECT কুয়েরি ডাটাবেসে পাঠানো হয়েছে এবং তার ফলাফল results এ প্রাপ্ত হয়েছে। fields হল ডাটা কনফিগারেশন।

MySQL Insert Query (Data Insert)

const sql = 'INSERT INTO users (name, email) VALUES (?, ?)';
connection.execute(sql, ['John Doe', 'john.doe@example.com'], (err, results) => {
    if (err) {
        console.error('Error executing query:', err);
    } else {
        console.log('Inserted Row ID:', results.insertId);
    }
    connection.end();
});

এখানে, ? ব্যবহার করে নিরাপদভাবে ডাটা ইনসার্ট করা হয়েছে।


২. Database Transactions (SQL)

Transactions হল একটি সিরিজ অপারেশন, যেগুলি একযোগে সফলভাবে সম্পন্ন হলে কার্যকর হয়। ট্রানজেকশন সঠিকভাবে পরিচালনা করতে COMMIT এবং ROLLBACK ব্যবহার করা হয়। ট্রানজেকশন ব্যবহৃত হয় যখন একাধিক ডাটাবেস অপারেশন একটি একক ইউনিট হিসেবে পরিচালিত হয়।

MySQL Transaction Handling

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    database: 'test_db'
});

// ট্রানজেকশন শুরু করা
connection.beginTransaction((err) => {
    if (err) {
        console.error('Error starting transaction:', err);
        return;
    }

    const sql1 = 'INSERT INTO users (name, email) VALUES (?, ?)';
    const sql2 = 'UPDATE accounts SET balance = balance - ? WHERE user_id = ?';

    // প্রথম কুয়েরি ইনসার্ট করা
    connection.query(sql1, ['Jane Doe', 'jane.doe@example.com'], (err, results1) => {
        if (err) {
            return connection.rollback(() => {
                console.error('Error in first query, rolling back:', err);
            });
        }

        // দ্বিতীয় কুয়েরি আপডেট করা
        connection.query(sql2, [100, results1.insertId], (err, results2) => {
            if (err) {
                return connection.rollback(() => {
                    console.error('Error in second query, rolling back:', err);
                });
            }

            // সব কিছু সঠিকভাবে সম্পন্ন হলে কমিট করা
            connection.commit((err) => {
                if (err) {
                    return connection.rollback(() => {
                        console.error('Error committing transaction:', err);
                    });
                }
                console.log('Transaction Complete!');
                connection.end();
            });
        });
    });
});

এখানে, beginTransaction() দিয়ে ট্রানজেকশন শুরু করা হয়েছে। rollback() যদি কোনো ত্রুটি ঘটে, এবং commit() সফলভাবে সব অপারেশন সম্পন্ন হলে ব্যবহার করা হয়েছে।


৩. NoSQL Database (MongoDB) Query Handling

NoSQL ডাটাবেসে যেমন MongoDB-তে ডাটাবেস কুয়েরি MongoDB Node.js Driver বা Mongoose ব্যবহার করে করা হয়।

MongoDB Query Handling (MongoDB Node.js Driver)

  1. MongoDB ইনস্টল করা
npm install mongodb
  1. MongoDB কনফিগারেশন এবং কুয়েরি এক্সিকিউট করা
const { MongoClient } = require('mongodb');

// MongoDB URL
const url = 'mongodb://localhost:27017';
const dbName = 'test_db';

// MongoDB ক্লায়েন্ট তৈরি করা
const client = new MongoClient(url);

async function main() {
    try {
        await client.connect();
        console.log('Connected to MongoDB');
        
        const db = client.db(dbName);
        const collection = db.collection('users');

        // Find কুয়েরি
        const users = await collection.find({}).toArray();
        console.log(users);

        // Insert কুয়েরি
        const insertResult = await collection.insertOne({ name: 'Alice', email: 'alice@example.com' });
        console.log('Inserted document:', insertResult);

    } finally {
        await client.close();
    }
}

main().catch(console.error);

এখানে, MongoDB এর find(), insertOne() মেথড ব্যবহার করা হয়েছে কুয়েরি এক্সিকিউট করার জন্য এবং await এর মাধ্যমে অ্যাসিনক্রোনাসভাবে কাজ করা হচ্ছে।

MongoDB Transaction Handling (Mongoose)

MongoDB-তে ট্রানজেকশন পরিচালনা করতে Mongoose ব্যবহার করা হয়। মংগোডিবিতে ট্রানজেকশন মূলত একাধিক ডাটাবেস অপারেশন একসাথে অ্যাটমিকভাবে পরিচালনা করা হয়।

npm install mongoose
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/test_db', { useNewUrlParser: true, useUnifiedTopology: true });

const userSchema = new mongoose.Schema({ name: String, email: String });
const User = mongoose.model('User', userSchema);

const session = await mongoose.startSession();
session.startTransaction();

try {
    const user = new User({ name: 'John', email: 'john@example.com' });
    await user.save({ session });

    // কমপ্লেক্স অপারেশনগুলি (যেমন অ্যাকাউন্ট ব্যালেন্স আপডেট) 
    await session.commitTransaction();
    console.log('Transaction committed');
} catch (error) {
    await session.abortTransaction();
    console.error('Transaction aborted due to error:', error);
} finally {
    session.endSession();
}

এখানে, startSession() দিয়ে ট্রানজেকশন শুরু করা হয়েছে এবং commitTransaction() এবং abortTransaction() দিয়ে টানজেকশন সফলভাবে শেষ বা ব্যর্থ হওয়া অনুযায়ী সিদ্ধান্ত নেওয়া হচ্ছে।


সারাংশ

  • Database Queries: SQL (MySQL/PostgreSQL) এবং NoSQL (MongoDB) ডাটাবেসে ডাটা এক্সট্র্যাকশন, ইনসার্ট, আপডেট, ডিলিট করার জন্য কুয়েরি ব্যবহৃত হয়।
  • Transactions: একাধিক ডাটাবেস অপারেশন একত্রে সম্পন্ন হলে এগুলিকে একক ইউনিট হিসেবে পরিচালনা করার জন্য transactions ব্যবহৃত হয়। এটি ডাটাবেসে অ্যাটমিকতা নিশ্চিত করে, যেখানে commit এবং rollback এর মাধ্যমে কার্যক্রম পরিচালনা করা হয়।
  • SQL (MySQL): MySQL এ beginTransaction(), commit(), এবং rollback() এর মাধ্যমে ট্রানজেকশন পরিচালনা করা যায়।
  • MongoDB: MongoDB-তে startSession() ব্যবহার করে ট্রানজেকশন শুরু করা হয় এবং Mongoose ব্যবহার করে ডাটাবেস অপারেশনসমূহ পরিচালিত হয়।

এভাবে আপনি আপনার ডাটাবেস কার্যক্রমে queries এবং transactions ব্যবহারের মাধ্যমে ডাটা পরিচালনা এবং সংরক্ষণ আরও কার্যকরভাবে করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...